#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int maxi = 50;
const int maxj = 1005;
const int p = 1e9 + 7;
int n, m, k;
int dp[maxi][maxj]; // 表示 前 i 条街, 建造了 j 个房子, 这里明显只用考虑个数, 不用考虑位置
void solve(){
	cin >> n>> m >> k;
	// 预处理
	for (int i=0;i<=k;i++) {
		dp[0][i] = 1;
	}
	
	for (int i=1;i<=n;i++) { // n 条街
		for (int j=1;j<=m;j++) { // 这条街 放 1~m 个的情况
			for (int h=i-1;h<=k-1;h++) { // 前面的街道放 i-1 ~ k-1 个
				dp[i][j+h] = (dp[i][j+h] + dp[i-1][h]) % p;
			}
		}
	}
	cout << dp[n][k] << '\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
